home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 11
/
CU Amiga Magazine's Super CD-ROM 11 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-06].iso
/
cucd
/
graphics
/
dsscripts
/
polygon.dsrx
< prev
next >
Wrap
Text File
|
1997-03-08
|
3KB
|
123 lines
/* Allow commands to return results */
options results
/* On error, goto ERROR:. Comment out this line if you wish to */
/* perform your own error checking. */
signal on error
'PROJECT_LOCK'
/* BEGIN PROGRAM *************************************************/
/* ++++++++++++++++++++++++++++++++ */
/* + + */
/* + Polygon drawing ARexx script + */
/* + + */
/* + Written by Andrew Elia + */
/* + + */
/* ++++++++++++++++++++++++++++++++ */
SIDES=9 /* Sets the number of sides -in this case a nonagon */
SIZE=10 /* Sets the size of the object */
CENX=10 /* The horizontal centre of the object */
CENY=10 /* The vertical centre of the object */
UNIT="cm" /* Sets the units */
/* Opens the library required for trigonometric functions */
call addlib("rexxmathlib.library", 0, -30, 0)
/* Variables which are used for converting Degrees to Radians */
/* (because rexxmathlib.library works in Radians), as well as */
/* the size of the angle between each vertex */
CONVERT=PI(0)/180
ANG=0
SLICE=360/SIDES
/* Draws the first point */
X=(Sin(ANG*CONVERT)*SIZE)+CENX
Y=(Cos(ANG*CONVERT)*SIZE)+CENY
MYSTRING = "CREATE_BEZIER CLOSED "||X||UNIT||" "||Y||UNIT
/* and the rest of them */
Do N=1 To (SIDES-1)
ANG=ANG+SLICE
X=(Sin(ANG*CONVERT)*SIZE)+CENX
Y=(Cos(ANG*CONVERT)*SIZE)+CENY
MYSTRING = MYSTRING||" L "||X||UNIT||" "||Y||UNIT
End N
/* This passes the data on to DrawStudio for drawing */
Interpret MYSTRING
/* END PROGRAM ***************************************************/
'PROJECT_UNLOCK'
exit
/* On ERROR */
ERROR:
'PROJECT_UNLOCK'
/* If we get here, either an error occurred with the command's */
/* execution or there was an error with the command itself. */
/* In the former case, rc2 contains the error message and in */
/* the latter, rc2 contains an error number. SIGL contains */
/* the line number of the command which caused the jump */
/* to ERROR: */
if datatype(rc2,'NUMERIC') == 1 then do
/* See if we can describe the error with a string */
select
when rc2 == 103 then
err_string = "ERROR 103, "||,
"out of memory at line "||SIGL
when rc2 == 114 then
err_string = "ERROR 114, "||,
"bad command template at line "||SIGL
when rc2 == 115 then
err_string = "ERROR 115, "||,
"bad number for /N argument at line "||SIGL
when rc2 == 116 then
err_string = "ERROR 116, "||,
"required argument missing at line "||SIGL
when rc2 == 117 then
err_string = "ERROR 117, "||,
"value after keywork missing at line "||SIGL
when rc2 == 118 then
err_string = "ERROR 118, "||,
"wrong number of arguments at line "||SIGL
when rc2 == 119 then
err_string = "ERROR 119, "||,
"unmatched quotes at line "||SIGL
when rc2 == 120 then
err_string = "ERROR 120, "||,
"line too long at line "||SIGL
when rc2 == 236 then
err_string = "ERROR 236, "||,
"unknown command at line "||SIGL
otherwise
err_string = "ERROR "||rc2||", at line "||SIGL
end
end
else if rc2 == 'RC2' then do
err_string = "ERROR in command at line "||SIGL
end
else do
err_string = rc2||", line "||SIGL
end
req_message TEXT '"'err_string'"'
exit